package com.ts.api.module.api.service;

import com.ts.api.module.api.entity.po.ApiKeyPO;
import com.ts.api.module.api.entity.vo.ReqApiParameterVO;
import com.ts.api.module.api.entity.vo.RespApiApplyQueryVO;
import com.ts.api.module.api.entity.vo.RespV3ApiDataExchangePhoneMaskVO;
import com.ts.api.module.api.entity.vo.RespV3ApiDataExchangeVO;

/**
 *  API-对方接入我方-全流程业务层
 *
 *  @author Pan
 */
public interface ApiMsgV3Service {

    /**
     *  撞库-MD5模式
     *
     *  @param  apiKeyPO            API渠道实体
     *  @param  reqApiParameterVO   请求参数
     *  @return RespV3ApiDataExchangeVO
     */
    RespV3ApiDataExchangeVO dataExchange(ApiKeyPO apiKeyPO, ReqApiParameterVO reqApiParameterVO) throws Exception;

    /**
     *  进件-MD5模式
     *
     *  @param apiKeyPO             API渠道实体
     *  @param reqApiParameterVO    请求参数
     */
    void apply(ApiKeyPO apiKeyPO, ReqApiParameterVO reqApiParameterVO);

    /**
     *  进件状态查询
     *
     *  @param  apiKeyPO            API渠道实体
     *  @param reqApiParameterVO    请求参数
     *  @return RespApiApplyQueryVO
     */
    RespApiApplyQueryVO applyStatusQuery(ApiKeyPO apiKeyPO, ReqApiParameterVO reqApiParameterVO);

    /**
     *  撞库-手机号掩码模式
     *
     *  @param  apiKeyPO            API渠道实体
     *  @param  reqApiParameterVO   请求参数
     *  @param  maskLen             掩码长度
     *  @return RespV3ApiDataExchangePhoneMaskVO
     */
    RespV3ApiDataExchangePhoneMaskVO dataExchangePhoneMask(ApiKeyPO apiKeyPO, ReqApiParameterVO reqApiParameterVO, Integer maskLen) throws Exception;

    /**
     *  进件-手机号掩码模式
     *
     *  @param apiKeyPO             API渠道实体
     *  @param reqApiParameterVO    请求参数
     *  @param maskLen              手机号掩码长度
     */
    void applyPhoneMask(ApiKeyPO apiKeyPO, ReqApiParameterVO reqApiParameterVO, Integer maskLen);

}
